#-*-coding:utf8-*-
from mutagen.easyid3 import EasyID3
from mutagen.flac import FLAC
from mutagen.oggvorbis import OggVorbis
from mutagen.asf import ASF



class tag:

    def __init__(self, filename):
        """
        Crée un tag associé à un morceau de musique. L'extension est automatiquement reconnue pour créer le tag adéquate.
        """

        type = filename.split('.')[-1]
        try:
            if ( type == "mp3" ):
                self.audio = EasyID3(filename)
            if ( type == "flac" ):
                self.audio = FLAC(filename)
            if ( type == "ogg" ):
                self.audio = Oggvorbis(filename)
            if ( type == "wma" ):
                self.audio = ASF(filename)
        except:
            self.audio = 'null'

    def set_title(self, title):
        """
        Met à jour le tag du titre et le sauvegarde
        """
        self.audio["title"] = title
        self.audio.save()
   
    def get_title(self):
        """
        Récupère le tag du titre. Si vide renvoie inconnu.
        """
        try:
            return str(self.audio["title"][0])
        except:
            return str("Inconnu")

    def set_artist(self, artist):
        """
        Met à jour le tag de l'artiste et le sauvegarde
        """
        self.audio["artist"] = artist
        self.audio.save()

    def get_artist(self):
        """
        Récupère le tag de l'artiste. Si vide renvoie inconnu.
        """
        try:
            return str(self.audio["artist"][0])
        except:
            return str("Inconnu")

    def set_date(self, date):
        """
        Met à jour le tag de la date et le sauvegarde
        """
        self.audio["date"] = date
        self.audio.save()

    def get_date(self):
        """
        Récupère le tag de la date. Si vide renvoie 1000.
        """
        try:
            if self.audio["date"][0] != None or self.audio["date"][0] != "":
                return int(self.audio["date"][0])
            else:
                return int('1000')
        except:
            return int('1000')

    def set_trnumber(self, trnumber):
        """
        Met à jour le tag du numéro de piste et le sauvegarde
        """
        self.audio["tracknumber"] = trnumber
        self.audio.save()

    def get_trnumber(self):
        """
        Récupère le tag du titre.
        """
        return self.audio["tracknumber"][0]
        
    def set_album(self, album):
        """
        Met à jour le tag de l'album et le sauvegarde
        """
        self.audio["album"] = album
        self.audio.save()

    def get_album(self):
        """
        Récupère le tag de l'album. Si vide renvoie inconnu.
        """
        try:
            return str(self.audio["album"][0])
        except:
            return str("Inconnu")

    def get_length(self):
        """
        Récupère le tag de la durée.
        """
        return self.audio["length"][0]

    def set_genre(self, genre):
        """
        Met à jour le tag du genre et le sauvegarde
        """
        self.audio["genre"] = genre
        self.audio.save()

    def get_genre(self):
        """
        Récupère le tag du genre. Si vide renvoie inconnu
        """
        try:
            return str(self.audio["genre"][0])
        except:
            return str("Inconnu")



